<?php
/**
 * Template Name: User Profile
 * 
 * http://wordpress.stackexchange.com/questions/9775/how-to-edit-a-user-profile-on-the-front-end
 */
/* Get user info. */
global $current_user, $wp_roles;
get_currentuserinfo();

$error = array();
/* If profile was saved, update profile. */
if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'update-user') {

    /* Update user password. */
    if (!empty($_POST['pass1']) && !empty($_POST['pass2'])) {
        if ($_POST['pass1'] == $_POST['pass2'])
            wp_update_user(array('ID' => $current_user->id, 'user_pass' => esc_attr($_POST['pass1'])));
        else
            $error[] = __('Passordene du skrev inn er ulike, passordet er ikke blitt oppdatert', 'profile');
    }

    /* Sjekker om brukeren har skrevet nytt passord i begge felt  (Nytt passord, og bekreft nytt passord) */
    if ((!empty($_POST['pass1']) && empty($_POST['pass2'])) || (empty($_POST[pass1]) && !empty($_POST['pass2']))) {
        $error[] = __('For å endre passordet, må det skrives nytt passord i begge felt', 'profile');
    }

    /* Update user information.
     * 
     * Sjekker om mail-adressen er registrert i databasen,
     * hvis den er registrert vil det sjekkes om det er brukerens egen
     * adresse som ligger inne, og gå videre hvis "true".
     * 
     * Dersom det er en annen brukers adresse, vil det komme opp feilmelding.
     */
    if (!empty($_POST['email'])) {
        if (!is_email(esc_attr($_POST['email']))) {
            $error[] = __('Email-adressen du skrev inn er ikke gyldig.</br>Vennligst prøv igjen.', 'profile');
        } else if (email_exists(esc_attr($_POST['email']))) {
            if (email_exists(esc_attr($_POST['email'])) != $current_user->id)
                $error[] = __('Denne email-adressen er allerede i bruk av en annen bruker.</br>Vennligst bruk en annen adresse', 'profile');
        } else {
            wp_update_user(array('ID' => $current_user->ID, 'user_email' => esc_attr($_POST['email'])));
        }
    }

    /*Sjekker at navn kun inneholder bokstaver, bindestrek og/eller punktum
     * (tar også med æøå i store og små bokstaver)
     */
    if (!empty($_POST['first-name'])) {
        if (!preg_match('/[^A-Za-z -.æøåÆØÅ]/', $_POST['first-name'])) {
            update_user_meta($current_user->id, 'first_name', esc_attr($_POST['first-name']));
        } else {
            $error[] = __('Navn kan kun inneholde bokstaver, bindestrek og punktum.', 'profile');
        }
    }
    
    /*Sjekker at navn kun inneholder bokstaver, bindestrek og/eller punktum
     * (tar også med æøå i store og små bokstaver)
     */
    if (!empty($_POST['last-name'])) {
        if (!preg_match('/[^A-Za-z -.æøåÆØÅ]/', $_POST['first-name'])) {
            update_user_meta($current_user->id, 'last_name', esc_attr($_POST['last-name']));
        } else {
            $error[] = __('Navn kan kun inneholde bokstaver, bindestrek og punktum.', 'profile');
        }
    }

    if (!empty($_POST['fødselsdag']) && !empty($_POST['fødselsmåned']) && !empty($_POST['fødselsår']))
        update_user_meta($current_user->id, 'fødselsdag', esc_attr($_POST['fødselsår'] . '-' . zeroise($_POST['fødselsmåned'], 2) . '-' . zeroise($_POST['fødselsdag'], 2)));
    if (!empty($_POST['telefon']))
        update_user_meta($current_user->id, 'telefon', esc_attr($_POST['telefon']));
    if (!empty($_POST['adresse']))
        update_user_meta($current_user->id, 'adresse', esc_attr($_POST['adresse']));

    /*Sjekker at postnummer er kun tall, og 4 tegn langt*/
    if (!empty($_POST['postnummer'])) {
        if (preg_match("%^[0-9]{4}$%", $_POST['postnummer'])) {
            update_user_meta($current_user->id, 'postnr', esc_attr($_POST['postnummer']));
        } else {
            $error[] = __('Postnummeret kan kun inneholde tall, og må være 4 tegn langt', 'profile');
        }
    }
    if (!empty($_POST['description']))
        update_user_meta($current_user->id, 'description', esc_attr($_POST['description']));
    if ($_POST['instrument'] != 'null')
        update_user_meta($current_user->id, 'instrument', esc_attr($_POST['instrument']));

    /* Redirect so the page will show updated info. */
    /* I am not Author of this Code- i dont know why but it worked for me after changing below line to if ( count($error) == 0 ){ */
    if (count($error) == 0) {
        //action hook for plugins and extra fields saving
        do_action('edit_user_profile_update', $current_user->id);
        wp_redirect('?page_id=87');
        exit;
    }
}


get_header();
get_sidebar('left');

?>

<div id="primary" class="site-content">
    <div id="content" role="main">

        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
                <div id="post-<?php the_ID(); ?>">
                    <div class="entry-content entry" style="margin-left: 10%; width: 60%;">
                        <?php the_content(); ?>
                        <?php if (!is_user_logged_in()) : ?>
                            <p class="warning">
                                <?php _e('You must be logged in to edit your profile.', 'profile'); ?>
                            </p><!-- .warning -->
                        <?php else : ?>
                            <?php if (count($error) > 0) echo '<p class="error">' . implode("<br />", $error) . '</p>'; ?>
                            <form method="post" id="adduser" action="<?php the_permalink(); ?>">
                                <p class="form-username">
                                    <label for="first-name"><?php _e('Fornavn: ', 'profile'); ?></label>
                                    <input class="text-input" name="first-name" type="text" id="first-name" value="<?php the_author_meta('first_name', $current_user->id); ?>" style="float:right;"/>
                                </p><!-- .form-username -->
                                <p class="form-username">
                                    <label for="last-name"><?php _e('Etternavn: ', 'profile'); ?></label>
                                    <input class="text-input" name="last-name" type="text" id="last-name" value="<?php the_author_meta('last_name', $current_user->id); ?>" style="float:right;"/>
                                </p><!-- .form-username -->
                                <p class="form-instrument">
                                    <label for="instrument"><?php _e('Instrument: ', 'profile') ?></label>
                                    <select name="instrument" style="float: right;">
                                        <option value="null">Velg instrument</option>
                                        <?php
                                        $instrumenter = $wpdb->get_results("
                                            SELECT feltdataid AS fID, feltdata
                                            FROM feltdata
                                            WHERE felttype = 'instrument'
                                            ORDER BY indeks ASC", ARRAY_A);
                                        foreach ($instrumenter as $instrument) {
                                            $sel = $instrument['fID'] == get_the_author_meta('instrument', $current_user->id)
                                            ?>
                                        <option <?php if ($sel) { ?>selected="true" <?php } ?>value="<?php echo $instrument['fID']; ?>"><?php echo $instrument['feltdata']; ?></option>
            <?php } ?>
                                    </select>
                                </p><!-- .form-instrument -->
                                <?php
                                $fd = get_the_author_meta('fødselsdag', $current_user->id);
                                $år = intval(substr($fd, 0, 4));
                                $md = intval(substr($fd, 5, 2));
                                $dg = intval(substr($fd, 8, 2));
                                ?>
                                <p class="form-bdag">
                                    <label for="bursdag"><?php _e('Fødselsdag (d-m-åååå): ', 'profile'); ?></label>
                                    <a name="bursdag" style="float:right;">
                                        <input class="text-input" name="fødselsdag" type="text" id="fødselsdag" value="<?php echo $dg; ?>" style="width:30px;"/> - 
                                        <input class="text-input" name="fødselsmåned" type="text" id="fødselsmnd" value="<?php echo $md; ?>" style="width:30px;"/> - 
                                        <input class="text-input" name="fødselsår" type="text" id="fødselsår" value="<?php echo $år; ?>" style="width:30px;"/>
                                    </a>
                                </p>
                                <p class="form-email">
                                    <label for="email"><?php _e('Email: ', 'profile'); ?></label>
                                    <input class="text-input" name="email" type="text" id="email" value="<?php the_author_meta('user_email', $current_user->id); ?>" style="float:right;"/>
                                </p><!-- .form-email -->
                                <p class="form-tlf">
                                    <label for="tlf"><?php _e('Telefon: ', 'profile'); ?></label>
                                    <input class="text-input" name="telefon" type="text" id="tlf" value="<?php the_author_meta('telefon', $current_user->id); ?>" style="float:right;"/>
                                </p><!-- .form-tlf -->
                                <p class="form-adresse">
                                    <label for="adresse"><?php _e('Adresse: ', 'profile'); ?></label>
                                    <input class="text-input" name="adresse" type="text" id="adresse" value="<?php the_author_meta('adresse', $current_user->id); ?>" style="float:right;"/>
                                </p><!-- .form-adresse -->
                                <p class="form-postnummer">
                                    <label for="postnummer"><?php _e('Postnummer: ', 'profile'); ?></label>
                                    <input class="text-input" name="postnummer" type="text" id="postnummer" value="<?php the_author_meta('postnr', $current_user->id); ?>" style="float:right;"/>
                                </p><!-- .form-postnummer -->
                                <p class="form-password">
                                    <label for="pass1"><?php _e('Nytt passord: ', 'profile'); ?> </label>
                                    <input class="text-input" name="pass1" type="password" id="pass1" style="float:right;"/>
                                </p><!-- .form-password -->
                                <p class="form-password">
                                    <label for="pass2"><?php _e('Gjenta nytt passord: ', 'profile'); ?></label>
                                    <input class="text-input" name="pass2" type="password" id="pass2" style="float:right;"/>
                                </p><!-- .form-password -->
                                <p class="form-textarea">
                                    <label for="description"><?php _e('Tilleggsinformasjon: ', 'profile') ?></label>
                                    <textarea name="description" id="description" rows="3" cols="50"><?php the_author_meta('description', $current_user->id); ?></textarea>
                                </p><!-- .form-textarea -->


                                <?php
                                //action hook for plugin and extra fields
                                do_action('edit_user_profile', $current_user);
                                ?>
                                <p class="form-submit">
                                    <?php echo $referer; ?>
                                    <input name="updateuser" type="submit" id="updateuser" class="submit button" value="<?php _e('Oppdater', 'profile'); ?>" />
            <?php wp_nonce_field('update-user') ?>
                                    <input name="action" type="hidden" id="action" value="update-user" />
                                </p><!-- .form-submit -->
                            </form><!-- #adduser -->
                <?php endif; ?>
                    </div><!-- .entry-content -->
                </div><!-- .hentry .post -->
                <?php
            endwhile;
        else:
            ?>
            <p class="no-data">
            <?php _e('Sorry, no page matched your criteria.', 'profile'); ?>
            </p><!-- .no-data -->
<?php endif; ?>


    </div><!-- #content -->
    <!--    <a href="#top" style="float: right;">Til Toppen</a>-->
</div><!-- #primary -->




<?php get_footer(); ?>
